﻿Imports System.Data
Imports System.Data.SqlClient
Imports CondorTravel.BE
Imports CondorTravelUTIL.DL



Public Class SolicitudServicioDALC



    Public Function InsertarSolicitudServicio(ByVal objSolicitudServicioBE As SolicitudServicioBE, ByRef bExito As Boolean, ByRef sMensaje As String) As Boolean

        Dim arrSqlParameter(5) As SqlParameter
        'Dim sqlSolicitudServicioInsertar As String

        Try
            ''1. Definir la sentencia a ejecutar
            'sqlSolicitudServicioInsertar = "SP_SolicitudServicioIns"

            '2. Definir e instanciar los parámetros a utilizar

            arrSqlParameter(0) = New SqlParameter()
            arrSqlParameter(0).ParameterName = "@COD_UNI_SERVICIO"
            arrSqlParameter(0).SqlDbType = SqlDbType.Int
            arrSqlParameter(0).Direction = ParameterDirection.Input
            arrSqlParameter(0).Value = objSolicitudServicioBE.Unidad

            arrSqlParameter(1) = New SqlParameter()
            arrSqlParameter(1).ParameterName = "@DES_SERVICIO"
            arrSqlParameter(1).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(1).Size = 200
            arrSqlParameter(1).Direction = ParameterDirection.Input
            arrSqlParameter(1).Value = objSolicitudServicioBE.NombreServicio

            arrSqlParameter(2) = New SqlParameter()
            arrSqlParameter(2).ParameterName = "@PROVEEDOR"
            arrSqlParameter(2).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(2).Size = 225
            arrSqlParameter(2).Direction = ParameterDirection.Input
            arrSqlParameter(2).Value = objSolicitudServicioBE.Proveedores

            arrSqlParameter(3) = New SqlParameter()
            arrSqlParameter(3).ParameterName = "@FEC_LANZAMIENTO"
            arrSqlParameter(3).SqlDbType = SqlDbType.Date
            arrSqlParameter(3).Direction = ParameterDirection.Input
            arrSqlParameter(3).Value = objSolicitudServicioBE.FechaLanzamiento

            arrSqlParameter(4) = New SqlParameter()
            arrSqlParameter(4).ParameterName = "@OBSERVACIONES"
            arrSqlParameter(4).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(4).Size = 255
            arrSqlParameter(4).Direction = ParameterDirection.Input
            arrSqlParameter(4).Value = objSolicitudServicioBE.Observaciones

            arrSqlParameter(5) = New SqlParameter()
            arrSqlParameter(5).ParameterName = "@USUARIO"
            arrSqlParameter(5).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(5).Size = 10
            arrSqlParameter(5).Direction = ParameterDirection.Input
            arrSqlParameter(5).Value = objSolicitudServicioBE.UsuarioCreador

            Dim oDatos As New AccesoDatos()

            oDatos.EjecutaSP("SP_SolicitudServicioIns", bExito, sMensaje, arrSqlParameter)

            Return bExito

        Catch ex As Exception
            Throw
        End Try

    End Function


    Public Function ModificaSolicitudServicio(ByVal objSolicitudServicioBE As SolicitudServicioBE, ByRef bExito As Boolean, ByRef sMensaje As String) As Boolean

        Dim arrSqlParameter(6) As SqlParameter
        'Dim sqlSolicitudServicioInsertar As String

        Try
            '1. Definir la sentencia a ejecutar
            'sqlSolicitudServicioInsertar = "SP_SolicitudServicioUpd"

            '2. Definir e instanciar los parámetros a utilizar

            arrSqlParameter(0) = New SqlParameter()
            arrSqlParameter(0).ParameterName = "@C_COD_SERVICIO"
            arrSqlParameter(0).SqlDbType = SqlDbType.Int
            arrSqlParameter(0).Direction = ParameterDirection.Input
            arrSqlParameter(0).Value = objSolicitudServicioBE.CodSolicitud

            arrSqlParameter(1) = New SqlParameter()
            arrSqlParameter(1).ParameterName = "@COD_UNI_SERVICIO"
            arrSqlParameter(1).SqlDbType = SqlDbType.Int
            arrSqlParameter(1).Direction = ParameterDirection.Input
            arrSqlParameter(1).Value = objSolicitudServicioBE.Unidad

            arrSqlParameter(2) = New SqlParameter()
            arrSqlParameter(2).ParameterName = "@DES_SERVICIO"
            arrSqlParameter(2).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(2).Size = 50
            arrSqlParameter(2).Direction = ParameterDirection.Input
            arrSqlParameter(2).Value = objSolicitudServicioBE.NombreServicio

            arrSqlParameter(3) = New SqlParameter()
            arrSqlParameter(3).ParameterName = "@PROVEEDOR"
            arrSqlParameter(3).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(3).Size = 255
            arrSqlParameter(3).Direction = ParameterDirection.Input
            arrSqlParameter(3).Value = objSolicitudServicioBE.Proveedores

            arrSqlParameter(4) = New SqlParameter()
            arrSqlParameter(4).ParameterName = "@OBSERVACIONES"
            arrSqlParameter(4).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(4).Size = 255
            arrSqlParameter(4).Direction = ParameterDirection.Input
            arrSqlParameter(4).Value = objSolicitudServicioBE.Observaciones

            arrSqlParameter(5) = New SqlParameter()
            arrSqlParameter(5).ParameterName = "@USUARIO"
            arrSqlParameter(5).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(5).Size = 10
            arrSqlParameter(5).Direction = ParameterDirection.Input
            arrSqlParameter(5).Value = objSolicitudServicioBE.UsuarioActualiza

            arrSqlParameter(6) = New SqlParameter()
            arrSqlParameter(6).ParameterName = "@ESTADO"
            arrSqlParameter(6).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(6).Size = 1
            arrSqlParameter(6).Direction = ParameterDirection.Input
            arrSqlParameter(6).Value = objSolicitudServicioBE.Estado


            Dim oDatos As New AccesoDatos()

            oDatos.EjecutaSP("SP_SolicitudServicioUpd", bExito, sMensaje, arrSqlParameter)

            Return bExito

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

    End Function

    Public Function ValidarEliminaSolicitudServicio(ByVal objSolicitudServicioBE As SolicitudServicioBE) As Integer

        Dim arrSqlParameter(5) As SqlParameter
        Dim sqlSolicitudServicioValidar As String
        Dim iNumIncidente As Integer

        Try
            '1. Definir la sentencia a ejecutar
            sqlSolicitudServicioValidar = "SP_ValidaSolicitudServicioDel"

            '2. Definir e instanciar los parámetros a utilizar
            arrSqlParameter(0) = New SqlParameter()
            arrSqlParameter(0).SqlDbType = SqlDbType.Int
            arrSqlParameter(0).Direction = ParameterDirection.ReturnValue

            arrSqlParameter(1) = New SqlParameter()
            arrSqlParameter(1).ParameterName = "@C_COD_SERVICIO"
            arrSqlParameter(1).SqlDbType = SqlDbType.Int
            arrSqlParameter(1).Direction = ParameterDirection.Input
            arrSqlParameter(1).Value = objSolicitudServicioBE.Unidad



            '3. Ejecutar la sentencia
            SqlHelper.ExecuteNonQuery(GetConnectionString, _
                                      CommandType.StoredProcedure, _
                                      sqlSolicitudServicioValidar, _
                                      arrSqlParameter)

            '4. Recuperar el valor de retorno
            iNumIncidente = arrSqlParameter(0).Value

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

        Return iNumIncidente

    End Function

    Public Function EliminarSolicitudServicio(ByVal objSolicitudServicioBE As SolicitudServicioBE) As Integer

        Dim arrSqlParameter(5) As SqlParameter
        Dim sqlSolicitudServicioEliminar As String
        Dim iNumIncidente As Integer

        Try
            '1. Definir la sentencia a ejecutar
            sqlSolicitudServicioEliminar = "SP_SolicitudServicioDel"

            '2. Definir e instanciar los parámetros a utilizar
            arrSqlParameter(0) = New SqlParameter()
            arrSqlParameter(0).SqlDbType = SqlDbType.Int
            arrSqlParameter(0).Direction = ParameterDirection.ReturnValue

            arrSqlParameter(1) = New SqlParameter()
            arrSqlParameter(1).ParameterName = "@C_COD_SERVICIO"
            arrSqlParameter(1).SqlDbType = SqlDbType.Int
            arrSqlParameter(1).Direction = ParameterDirection.Input
            arrSqlParameter(1).Value = objSolicitudServicioBE.CodSolicitud



            '3. Ejecutar la sentencia
            SqlHelper.ExecuteNonQuery(GetConnectionString, _
                                      CommandType.StoredProcedure, _
                                      sqlSolicitudServicioEliminar, _
                                      arrSqlParameter)

            '4. Recuperar el valor de retorno
            iNumIncidente = arrSqlParameter(0).Value

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

        Return iNumIncidente

    End Function

    Public Function ListaSolicitudServicio(ByVal objSolicitudServicioBE As SolicitudServicioBE) As List(Of SolicitudServicioBE)

        Dim sqlListar As String
        Dim objListaSolServicio As New List(Of SolicitudServicioBE)
        Dim objSolServicioBE As SolicitudServicioBE = Nothing
        Dim arrSqlParameter(3) As SqlParameter
        Dim ds As DataSet
        Dim dt As DataTable

        Dim objDatos As New AccesoDatos()
        Dim blnExito As Boolean
        Dim strMensaje As String = String.Empty
        Dim intI As Integer = 0

        Try

            sqlListar = "SP_SolicitudServicioList"

            arrSqlParameter(0) = New SqlParameter("@DESCRIPCION", System.Data.SqlDbType.VarChar)
            arrSqlParameter(0).Value = objSolicitudServicioBE.NombreServicio


            arrSqlParameter(1) = New SqlParameter("@USUARIO", System.Data.SqlDbType.VarChar)
            arrSqlParameter(1).Value = objSolicitudServicioBE.UsuarioCreador

            arrSqlParameter(2) = New SqlParameter("@FECHAINICIO", System.Data.SqlDbType.VarChar)
            arrSqlParameter(2).Value = objSolicitudServicioBE.FechaInicio

            arrSqlParameter(3) = New SqlParameter("@FECHAFIN", System.Data.SqlDbType.VarChar)
            arrSqlParameter(3).Value = objSolicitudServicioBE.FechaFin


            ds = objDatos.DevuelveDataSet(sqlListar, blnExito, strMensaje, arrSqlParameter)
            dt = ds.Tables(0)


            objListaSolServicio = New List(Of SolicitudServicioBE)()

            If dt.Rows.Count > 0 Then

                While intI < dt.Rows.Count
                    objSolServicioBE = New SolicitudServicioBE()
                    objSolServicioBE.CodSolicitud = dt.Rows(intI).ItemArray(0).ToString
                    objSolServicioBE.NombreServicio = dt.Rows(intI).ItemArray(1).ToString
                    objSolServicioBE.Unidad = dt.Rows(intI).ItemArray(2).ToString
                    objSolServicioBE.Observaciones = dt.Rows(intI).ItemArray(3).ToString
                    objSolServicioBE.UsuarioCreador = dt.Rows(intI).ItemArray(4).ToString
                    objSolServicioBE.Estado = dt.Rows(intI).ItemArray(5).ToString
                    intI = intI + 1

                    objListaSolServicio.Add(objSolServicioBE)
                End While
            End If

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

        Return objListaSolServicio
    End Function



    Public Function ListaSolicitudServicio_Update(ByVal objSolicitudServicioBE As SolicitudServicioBE, ByRef bExito As Boolean, ByRef sMensaje As String) As List(Of SolicitudServicioBE)

        Dim sqlListar As String
        Dim objListaSolServicio As New List(Of SolicitudServicioBE)
        Dim objSolServicioBE As SolicitudServicioBE = Nothing
        Dim arrSqlParameter(0) As SqlParameter
        Dim ds As DataSet
        Dim dt As DataTable

        Dim objDatos As New AccesoDatos()
        'Dim blnExito As Boolean
        'Dim strMensaje As String = String.Empty
        Dim intI As Integer = 0

        Try

            sqlListar = "SP_SolicitudServicioUpdate_List"

            arrSqlParameter(0) = New SqlParameter("@CODIGO", System.Data.SqlDbType.Int)
            arrSqlParameter(0).Value = objSolicitudServicioBE.CodSolicitud

            ds = objDatos.DevuelveDataSet(sqlListar, bExito, sMensaje, arrSqlParameter)
            dt = ds.Tables(0)


            objListaSolServicio = New List(Of SolicitudServicioBE)()

            If dt.Rows.Count > 0 Then

                While intI < dt.Rows.Count
                    objSolServicioBE = New SolicitudServicioBE()
                    objSolServicioBE.CodSolicitud = dt.Rows(intI).ItemArray(0).ToString
                    objSolServicioBE.Unidad = dt.Rows(intI).ItemArray(1).ToString
                    objSolServicioBE.NombreServicio = dt.Rows(intI).ItemArray(2).ToString
                    objSolServicioBE.Proveedores = dt.Rows(intI).ItemArray(3).ToString
                    objSolServicioBE.FechaLanzamiento = dt.Rows(intI).ItemArray(4).ToString
                    objSolServicioBE.Estado = dt.Rows(intI).ItemArray(6).ToString
                    objSolServicioBE.UsuarioCreador = dt.Rows(intI).ItemArray(9).ToString
                    intI = intI + 1

                    objListaSolServicio.Add(objSolServicioBE)
                End While
            End If

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

        Return objListaSolServicio
    End Function


    Public Function ListaSolicitudServicio_Busqueda(ByVal objSolicitudServicioBE As SolicitudServicioBE, ByRef bExito As Boolean, ByRef sMensaje As String) As List(Of SolicitudServicioBE)

        Dim sqlListar As String
        Dim objListaSolServicio As New List(Of SolicitudServicioBE)
        Dim objSolServicioBE As SolicitudServicioBE = Nothing
        Dim arrSqlParameter(1) As SqlParameter
        Dim ds As DataSet
        Dim dt As DataTable

        Dim objDatos As New AccesoDatos()
        'Dim blnExito As Boolean
        'Dim strMensaje As String = String.Empty
        Dim intI As Integer = 0

        Try

            sqlListar = "SP_SolicitudServicio_List_Busq"

            arrSqlParameter(0) = New SqlParameter("@CODIGO", System.Data.SqlDbType.Int)
            arrSqlParameter(0).Value = objSolicitudServicioBE.CodSolicitud

            arrSqlParameter(1) = New SqlParameter("@NOMBRE", System.Data.SqlDbType.VarChar)
            arrSqlParameter(1).Value = objSolicitudServicioBE.NombreServicio

            ds = objDatos.DevuelveDataSet(sqlListar, bExito, sMensaje, arrSqlParameter)
            dt = ds.Tables(0)


            objListaSolServicio = New List(Of SolicitudServicioBE)()

            If dt.Rows.Count > 0 Then

                While intI < dt.Rows.Count
                    objSolServicioBE = New SolicitudServicioBE()
                    objSolServicioBE.CodSolicitud = dt.Rows(intI).ItemArray(0).ToString
                    objSolServicioBE.NombreServicio = dt.Rows(intI).ItemArray(1).ToString
                    objSolServicioBE.UsuarioCreador = dt.Rows(intI).ItemArray(2).ToString
                    objSolServicioBE.Proveedores = dt.Rows(intI).ItemArray(3).ToString
                

                    intI = intI + 1

                    objListaSolServicio.Add(objSolServicioBE)
                End While
            End If

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

        Return objListaSolServicio
    End Function


    Public Function ValidarSolicitudServicio(ByVal objSolicitudServicioBE As SolicitudServicioBE, ByRef bExito As Boolean, ByRef sMensaje As String) As List(Of SolicitudServicioBE)
        Dim sqlListar As String
        Dim objListaSolServicio As New List(Of SolicitudServicioBE)
        Dim objSolServicioBE As SolicitudServicioBE = Nothing
        Dim arrSqlParameter(0) As SqlParameter
        Dim ds As DataSet
        Dim dt As DataTable

        Dim objDatos As New AccesoDatos()
        'Dim blnExito As Boolean
        'Dim strMensaje As String = String.Empty
        Dim intI As Integer = 0

        Try

            sqlListar = "SP_ValidarSolicitudServicioList"

            arrSqlParameter(0) = New SqlParameter("@CODIGO", System.Data.SqlDbType.Int)
            arrSqlParameter(0).Value = objSolicitudServicioBE.CodSolicitud

            ds = objDatos.DevuelveDataSet(sqlListar, bExito, sMensaje, arrSqlParameter)
            dt = ds.Tables(0)


            objListaSolServicio = New List(Of SolicitudServicioBE)()

            If dt.Rows.Count > 0 Then

                While intI < dt.Rows.Count
                    objSolServicioBE = New SolicitudServicioBE()
                    objSolServicioBE.CodSolicitud = dt.Rows(intI).ItemArray(0).ToString
                    intI = intI + 1

                    objListaSolServicio.Add(objSolServicioBE)
                End While
            End If

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

        Return objListaSolServicio
    End Function

End Class
